<?php


namespace App\Http\Controllers\Admin\RoomManager;

use App\Exceptions\BasicException;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\BaseController;
use Illuminate\Http\Request;
use App\Response\Response;

class MicrophoneController extends BaseController
{

    /**
     * @api {get} /room/microphone 获取限制上麦工具信息
     * @apiVersion 0.1.0
     * @apiName 获取限制上麦工具信息
     * @apiGroup 限制上麦工具
     * @apiSuccessExample 成功响应
     * {
     * "code": 200,
     * "data": {
     * "NO_MONEY_ALL_ROOM": {//是否开启全部房间过滤(控制类型)
     * "value": "1",//是否开启全部房间过滤 0表示不开启，不开启时仅过滤对应数组里的配置 1表示开始
     * "status": 0//是否显示该按钮 0表示显示 1表示不显示
     * },
     * "NO_MONEY_ROOM_CODES": {//需要过滤的房间code
     * "value": "5625149,8356437,8356532,3356764,666",//房间id，用英文 “,”分隔
     * "status": 0//是否显示该按钮 0表示显示 1表示不显示
     * },
     * "NO_MONEY_OPEN": {//是否开启全部房间过滤(控制开关)
     * "value": "0",/0表示关闭 ，1表示开启
     * "status": 0//是否显示该按钮 0表示显示 1表示不显示
     * }
     * }
     * }
     */
    public function list(Request $request)
    {
        $result = app('model_config')->whereIn('key', ['NO_MONEY_ALL_ROOM', 'NO_MONEY_ROOM_CODES', 'NO_MONEY_OPEN'])->orderBy('id', 'desc')->get();
        $res = [];
        foreach ($result as $key => $value) {
            if ($value['key'] == 'NO_MONEY_OPEN') {
                $res['NO_MONEY_OPEN'] = ['value' => $value['value'], 'status' => $value['status']];
            }
            if ($value['key'] == 'NO_MONEY_ROOM_CODES') {
                $res['NO_MONEY_ROOM_CODES'] = ['value' => $value['value'], 'status' => $value['status']];
            }
            if ($value['key'] == 'NO_MONEY_ALL_ROOM') {
                $res['NO_MONEY_ALL_ROOM'] = ['value' => $value['value'], 'status' => $value['status']];
            }
        }

        return Response::sendData($res);
    }


    /**
     * @api {put} /room/microphone 修改限制上麦工具信息
     * @apiVersion 0.1.0
     * @apiName 修改限制上麦工具信息
     * @apiGroup 限制上麦工具
     * @apiParam {number} is_open               控制开关 NO_MONEY_OPEN  0不开启 1开启
     * @apiParam {number} is_all_room                       0不开启 1开启 必传
     * @apiParam {string} room_ids                     房间id 用英文“,”分隔  选填  参数示范   (45,684449849,5984 )
     * @apiSuccessExample 成功响应
     *      {"code":200,"data":true}
     * @apiError 10001 参数校验失败
     * @apiErrorExample 错误响应
     *      {
     *          "code": 10001,
     *          "message": "errorMsg"
     *      }
     */


    public function update(Request $request)
    {
        //参数校验
        try {
            $this->validate($request, [
                'is_open'     => 'required|in:0,1',//控制开关 NO_MONEY_OPEN  0不开启 1开启
                'is_all_room' => 'required|in:0,1',//全部房间 NO_MONEY_ALL_ROOM 0表示不开启，不开启时仅过滤对应数组里的配置 1表示开始
                'room_ids'    => 'string',//room_id

            ]);
        } catch (\Exception $e) {
            throw new BasicException(10001, json_encode($e->errors()));
        }
        $params = $request->only(['is_open', 'is_all_room', 'room_ids']);
        $res = app('repo_microphone')->update($params);
        return Response::sendData($res);
    }

}